The disclosure relates to detecting or preventing “rollback,” that is to say, restoration of a system to an earlier state, and especially to preventing the use of rollback to evade a restriction on the repeated or continued use of a resource.
Many computer-readable resources, including computer programs, databases, and media and other data files, are provided to an end-user under a license that quantitatively limits the use of the resource. For example, use may be limited to a specified number of executions of a program, or a specified number of pages printed. In order to keep track of the usage, data that records the usage is saved. For example, a program may maintain a sequence number or counter that increases to a limit or decreases to zero.
However, if the license and usage data are saved as ordinary working data by the program to which they relate, or by a program accessing the data to which they relate, an astute and unscrupulous user could take a copy of the data shortly after the program is first installed and, at a later time when the usage limit is reached, restore the usage data from that copy to the earlier state, thus fooling the program into thinking the usage limit has not been reached, and circumventing the limit. Even the not particularly expert user can sometimes achieve this result by uninstalling and reinstalling the program.
To prevent this circumvention, some programs hide the usage data in places, for example, an area normally reserved to the operating system or an area entirely outside a disk partition of a hard disk drive, where the data are not easily accessible or editable by the ordinary user. Some programs save the usage data as “persistence data” that remain on the system even if the controlling program is uninstalled. However, especially in a large system where licensing is managed centrally from a server, the constant updating of the hidden usage data for all the supported instances of all the supported programs or data can create a burden to slow down the license server.